﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Website.Logger;
using DAL;
using BOL;
using System.Drawing;
using WebLib;
using System.Web.Script.Services;
using System.Web.Services;
using UtilityExtensions;


namespace UILGestion.ObraAdmin
{
    public partial class ComparativoReadForm1 : System.Web.UI.Page
    {

        [WebMethod(), ScriptMethod()]
        public static string GetProveedor(String prefixText, String contextKey)
        {

            dbGestionDataContext _db =
               new dbGestionDataContext(Parametros.strConnString);
            //_db.CP0001MAES  de sistema contcar  && a.AC_CVANEXO == Convert.ToChar("P")
            var p = (from a in _db.Proveedors
                     where (a.codigo + a.descripcion).Contains(prefixText)

                     select new
                     {
                         a.idInternal,
                         a.descripcion

                     }).Take(20);

            dbGestionDataContext _ge = new dbGestionDataContext(Parametros.strConnString);

            return Util.Tbl2Str(Util.EntidadToDataTable(p));

        }


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    internalID.Value = (string)Request.QueryString["id"];
                    
                    idObra.Value = (string)Request.QueryString["idObra"];
                    menuObraCtrl1.loadMenu(int.Parse(idObra.Value), Request.AppRelativeCurrentExecutionFilePath);
                    
                    
                    FormatForm();
                }
                catch (SqlException sqlex)
                {
                    WebServerSideSqlError.Log(sqlex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


                }
                catch (Exception ex)
                {
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

                }

            }
        }

        private  void SetEstadistica(Comparativo comparativo)
            {

                TableRow tr = new TableRow();

                TableCell td = new TableCell();
                td.Attributes.Add("align", "right");
                td.Text = "TOTAL BASE PARTIDAS:";
                //td.Width = Unit.Parse("300");
                tr.Controls.Add(td);

                td = new TableCell();
           
                td.Text = string.Format("{0} {1:N}",comparativo.Moneda.simbol,comparativo.totalComparativo);
                td.Attributes.Add("align", "right");
                td.Width = Unit.Parse("100");
                tr.Controls.Add(td);

                totalesTBL.Controls.Add(tr);

                if (comparativo.idEstado == 3)
                {
                    // cargo el detale del ganador

                    var proveedor = comparativo.ComparativoProveedors.Single(p => p.bitSeleccion.Value);
                    //--------------------------------
                    tr = new TableRow();
                    tr.Attributes.Add("style", "background-color:#FFCCFF");
                    td = new TableCell();
                    td.Attributes.Add("align", "right");
                    td.Text =string.Format("{0}:", proveedor.Proveedor.descripcion);
                    tr.Controls.Add(td);

                    td = new TableCell();
                    td.Text = string.Format("{0} {1:N}", comparativo.Moneda.simbol, proveedor.totalContratado);
                    td.Attributes.Add("align", "right");
                    tr.Controls.Add(td);
                    totalesTBL.Controls.Add(tr);
                    //-------------------------------
                    tr = new TableRow();
                    td = new TableCell();
                    td.Attributes.Add("align", "right");
                    td.Text = "TOTAL USO EN ORDENES:";
                    tr.Controls.Add(td);

                   
                    td = new TableCell();
                    td.Attributes.Add("align", "right");
                    td.Text = string.Format("{0} {1:N}", comparativo.Moneda.simbol, proveedor.totalUso);
                    tr.Controls.Add(td);
                    totalesTBL.Controls.Add(tr);
                    //-----------------------------------
                    if (comparativo.idEstado == 14)
                    {
                        // 27082013 ahora ya no puede cambiar entre proveedores, toma uno y en este termina
                        tr = new TableRow();
                        td = new TableCell();
                        td.Attributes.Add("align", "right");
                        td.Text = "TOTAL DEVOLUCIONES";
                        tr.Controls.Add(td);

                        td = new TableCell();
                        td.Attributes.Add("align", "right");
                        td.Text = string.Format("{0} {1:N}", comparativo.Moneda.simbol, proveedor.total - proveedor.totalContratado);
                        tr.Controls.Add(td);
                        totalesTBL.Controls.Add(tr);
                    }
                    //-------------------------------
                    tr = new TableRow();
                    td = new TableCell();
                    td.Attributes.Add("align", "right");
                    td.Text = "TOTAL DISPONIBLE:";
                    tr.Controls.Add(td);


                    td = new TableCell();
                    td.Attributes.Add("align", "right");
                    td.Text = string.Format("{0} {1:N}", comparativo.Moneda.simbol, proveedor.totalContratado-proveedor.totalUso);
                    tr.Controls.Add(td);
                    totalesTBL.Controls.Add(tr);

                    

                }
                else
                {
                    //MOSTRAMOS TODOS CON EL GANADOR
                    foreach (var item in comparativo.ComparativoProveedors)
                    {
                        tr = new TableRow();
                        if (item.bitSeleccion.Value)
                        {
                            tr.Attributes.Add("style", "background-color:#FFCCFF");
                        }
                        td = new TableCell();
                        td.Text = item.Proveedor.descripcion;
                        tr.Controls.Add(td);

                        td = new TableCell();
                        td.Text = string.Format("{0} {1:N}", comparativo.Moneda.simbol, item.total);
                        td.Attributes.Add("align", "right");
                        tr.Controls.Add(td);
                        totalesTBL.Controls.Add(tr);


                    }
                }


            }

        private void readObject()
        {
            ComparativoBL bol= new ComparativoBL();

            ComparativoInfo comparativo=  bol.LoadComparativo(int.Parse(internalID.Value));
            
            idObra.Value = comparativo.idObra.ToString();
            numDocumentoLabel.Text = comparativo.numDocumento;
            descripcionLabel.Text = comparativo.descripcion;
            fechaLabel.Text = comparativo.fecha.ToShortDateString();
            monedaConparativoLabel.Text = comparativo.moneda;
            
            estructuraCostoLabel.Text = comparativo.estructura;
            tipoCambioLabel.Text = comparativo.tipoCambio.ToString();
            observacionLabel.Text = comparativo.observaciones;
            
            //proveedor1Label.Text=comparativo.proveedor1;


            estructuraCosto2HLK.Text = comparativo.estructuraCosto;
            estructuraCosto2HLK.NavigateUrl =
                "../EstructuraCompras/EstructuraCostoEditForm.aspx?idObra={0}&id={1}".Fmt(idObra.Value, comparativo.idEstructuraCosto);
            
            idEstructuraCosto.Value = comparativo.idEstructuraCosto.ToString();
            estadoLabel.Text = comparativo.estado.ToUpper();
            idEstado.Value = comparativo.idEstado.ToString();
            
         
            fechaModLabel.Text = comparativo.fechaMod.ToString();
            fechaCreLabel.Text = comparativo.fechaCre.ToString();
            fechaaprob2Label.Text = comparativo.fechaAprobacion2.ToString();
            aprobacion2Label.Text = comparativo.aprobacion2;
            aprobacion1Label.Text = comparativo.aprobacion1;
            usuarioCreLabel.Text = comparativo.usuarioCre;

            idProveedorSelect.Value = (comparativo.ProveedorSelec == null) ? "0" : comparativo.ProveedorSelec.ToString();
            //para el pie de apgina

            idItemSeleccion.Value = DbUtil.Db.ComparativoProveedors.SingleOrDefault(p => p.idComparativo == comparativo.idInternal
                                    & p.bitSeleccion == true).item.ToString();

            //-----------

            gastoObraNuevoButton.PostBackUrl = String.Format("../OrdenCompras/GastoObraEditForm.aspx?type=A&idComparativo={0}&idObra={1}", internalID.Value, idObra.Value);
            ordenCompra_Button.PostBackUrl = String.Format("../OrdenCompras/OrdenCompraEditForm.aspx?idComparativo={0}&idObra={1}", internalID.Value, idObra.Value);
            //---------


           
            desaprobarButton.Visible = false;
            ordenCompra_Button.Visible = false;
            gastoObraNuevoButton.Visible = false;
            aprobarButton.Visible = true;
            devolucionButton.Visible=false;
            
            devolucionItemButtom.Visible = false;
            //SeleccionProveedorButton.Visible = false;
            //3 aprobado 2
            // 1 es generado
            if (comparativo.totalUsoEnOrdenCompraMon > 0 & comparativo.ProveedorSelec!=null)
            {
                devolucionItemButtom.Visible = true;
            }

            if (comparativo.idEstado == 2)
            {
                aprobarButton.Visible = true;
                ordenCompra_Button.Visible = false;
                desaprobarButton.Visible = true;
                EditarButton.Visible = false; //no puede hacer cambios 
                //devolucionButton.Visible = false;
               

            }
            if (comparativo.idEstado == 3)
            {
                aprobarButton.Visible = false;
                ordenCompra_Button.Visible = true;
                gastoObraNuevoButton.Visible = true;
                desaprobarButton.Visible =true;
                //devolucionButton.Visible=true;
                EditarButton.Visible = false;
               
               
            }
            if (comparativo.ProveedorSelec == null | comparativo.totalUsoEnOrdenCompraMon == 0)
            {
                
               // SeleccionProveedorButton.Visible = true;
            }
            if (comparativo.idEstado == 14) //devolucion
            {
                //calculamos el devolucion

                //ComparativoProveedor cp =
                //    DbUtil.Db.ComparativoProveedors.Single(
                //    p => p.idComparativo == int.Parse(internalID.Value) & p.bitSeleccion == true);
                ////totalBaseDevolucionLabel.Text = (cp.total.Value - cp.totalContratado.Value).ToString("N");

                // SeleccionProveedorButton.Enabled = false;
                aprobarButton.Visible = false;
                desaprobarButton.Visible = false;

                // devolucionButton.Visible = false;

            }
            SetEstadistica(DbUtil.Db.Comparativos.Single(p=>p.idInternal==int.Parse(internalID.Value)));



        }
        private void ShowAllComboBox()
        {

            
            


            //using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
            //{
                
            //    var q = _db.Moneda;

            //    monedaDropDownList.DataTextField = "descripcion";
            //    monedaDropDownList.DataValueField = "idInternal";
            //    monedaDropDownList.DataSource = q;
            //    monedaDropDownList.DataBind();

            //    var qwe = _db.FormaPago;

            //    formaPagoDropDownList.DataTextField = "descripcion";
            //    formaPagoDropDownList.DataValueField = "idInternal";
            //    formaPagoDropDownList.DataSource = qwe;
            //    formaPagoDropDownList.DataBind();

            //    // si la obra   incluye el IGV en el Precio

            //    Obra obra = _db.Obras.Single(p => p.idInternal == int.Parse(idObra.Value));
            //    if (obra.incluyeIGV.Value)
            //    {
            //       IncluyeIGVTextBox.Visible = true;
            //    }
            //}

        }

        private void restriccionesForm()
        {
            int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());
            //--------------------

            bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
                idEmpleadoEmisor,
                2,  //comparativo
                int.Parse(idObra.Value),
                1);  //read
            //------------------------- 
            // los paneles presentes en el formulario
            pnlMain.Visible = true;
            //proveedorIntParentPanel.Visible = true;
            PanelButtom.Visible = true;
            PanelBody.Visible = true;
            comparativoitemFinPanel.Visible = true;
            //-----------------------------

        }


        private void FormatForm()
        {

            restriccionesForm();
            ShowAllComboBox();
            //restricionesForm();

            idtemAddProvList.Value = Parametros.GenerarID().ToString();
            readObject();
            DataBindComparativoItem();
            DataBindProveedor();
         
            

        }
    

        #region "Bottones"

       
        private void cabecerasPanel()
        {
            //solo lo actualizado


            ComparativoInfo com=new ComparativoBL().LoadComparativo(int.Parse(internalID.Value));
            aprobacion1Label.Text=com.aprobacion1;
            aprobacion2Label.Text=(com.aprobacion2==null)?"":com.aprobacion2;
            fechaaprob2Label.Text=com.fechaAprobacion2.ToString();
            //totalBaseComparativoLabel.Text = com.totalComparativoMon.ToString("N");
            //totalUsoComparativoLabel.Text = com.totalUsoEnOrdenCompraMon.ToString("N");


                cabeceraPanel.Update();
        }


        protected void aprobarButton_Click(object sender, EventArgs e)
        {
            try 
	        {	        
		
	
            ComparativoBL comparativo = new ComparativoBL();

            bool nivel1=comparativo.updateAprobacionNivel1(int.Parse(internalID.Value));
            cabecerasPanel();

            bool nivel2=comparativo.updateAprobacionNivel2(int.Parse(internalID.Value));
           
            comparativo = null;
            if (nivel2)
             {
                    Response.Redirect("comparativoReadForm.aspx?id=" + internalID.Value + "&idObra=" + idObra.Value, true);
              }
               
               }

            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        protected void desaprobarButton_Click(object sender, EventArgs e)
        {
            try 
	      {	        
		    ComparativoBL comparativo = new ComparativoBL();

            bool result=comparativo.updateDesAprobacion(int.Parse(internalID.Value));
            if (result)
            {
                comparativo = null;
                Response.Redirect("comparativoReadForm.aspx?id=" + internalID.Value + "&idObra=" + idObra.Value, true);
            }
            
                }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }



        protected void devolucionButton_Click(object sender, EventArgs e)
        {
            try 
	      {	 
       
            
		    ComparativoBL comparativo = new ComparativoBL();

            bool result=comparativo.finalizarContrato(int.Parse(internalID.Value));
            if (result)
            {
                comparativo = null;
                Response.Redirect("comparativoReadForm.aspx?id=" + internalID.Value + "&idObra=" + idObra.Value, true);
            }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }


        protected void devolucionItemButton_Click(object sender, EventArgs e)
        {
            try
            {
                ComparativoItemFinSeleccionPanel1.LoadRecurso();
                finalizarDevolucionPopupExtender.Show();

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }


        protected void nuevoButton_Click(object sender, EventArgs e)
        {
            Response.Redirect("comparativoInsertForm.aspx?idObra="+idObra.Value, true);
        }
        protected void EditarButton_Click(object sender, EventArgs e)
        {
            try 
	{	        
		
	
	
            //if (idEstado.Value != "1")
            //{
            //    throw new Exception("No puede  Editar el comparativo por estar Aprobado");
                
            //}
            //if (decimal.Parse(totalUsoComparativoLabel.Text) > 0)
            //{
            //    throw new Exception("No puede  Editar el comparativo por Existir Ordenes de Compra");

            //}

            Response.Redirect("ComparativoEditForm.aspx?id=" + internalID.Value + "&idObra=" + idObra.Value, true);
    }
             catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

        protected void refreshButton_Click(object sender, EventArgs e)
        {
            try
            {
                Response.Redirect("ComparativoReadForm.aspx?id=" + internalID.Value + "&idObra=" + idObra.Value, true);
               
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

        protected void EliminarButton_Click(object sender, EventArgs e)
        {
            try
            {
                ComparativoBL comparativo= new ComparativoBL();
                bool result = comparativo.delete(int.Parse(internalID.Value));
                if (result)
                {
                    Response.Redirect("ComparativoListForm.aspx?idObra="+idObra.Value, false);
                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }



        protected void anteriorButton_Click(object sender, EventArgs e)
        {
            try
            {
                Comparativo cp= new Comparativo();
                dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString);
                int  idAnterior=cp.getidAnterior(_db,int.Parse(internalID.Value),int.Parse(idObra.Value));


                    Response.Redirect("ComparativoReadForm.aspx?id=" + idAnterior.ToString()+"&idObra="+idObra.Value ,false);

                }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        protected void siguienteButton_Click(object sender, EventArgs e)
        {
            try
            {

                dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString);
                Comparativo cp = new Comparativo();

                int siguiente = cp.getidSiguiente(_db, int.Parse(internalID.Value), int.Parse(idObra.Value));

                Response.Redirect("ComparativoReadForm.aspx?id=" + siguiente.ToString() + "&idObra=" + idObra.Value, false);

                }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        //protected void ordenCompra_Click(object sender, EventArgs e)
        //{
        //    try
        //    {

                
        //            Response.Redirect("OrdenCompraInsertForm.aspx?idComparativo=" + internalID.Value+"&idObra="+idObra.Value, false);

             
        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }
        //}
        
        
        
        #endregion

       

        private void DataBindComparativoItem()
        {


            var q = new ComparativoBL().getComparativoItemList(int.Parse(internalID.Value));
           

            int items = DbUtil.Db.ComparativoProveedors.Where(p => p.idComparativo == int.Parse(internalID.Value)).Count();
            
            if (q.Count()>0)
            {
                partidaGridView.Columns[8].Visible=false;
                partidaGridView.Columns[9].Visible=false;
                //para los colores del proveedor seleccionado

                int iditemsseleccion = idItemSeleccion.Value.ToInt() + 6;
                {
                    partidaGridView.Columns[iditemsseleccion].ItemStyle.BackColor = Color.FromName("#FFCCFF");
                }


                                
                if (items > 1)
                {
                    partidaGridView.Columns[8].Visible = true;
                    
                    
                    if (items > 2)
                    {
                        partidaGridView.Columns[9].Visible = true;
                       
                    }

                }

            partidaGridView.DataSource = q;
            partidaGridView.DataBind();
            }

        }

        #region  "proveedor"
        private void DataBindProveedor()
        {
            
            ComparativoBL compBL = new ComparativoBL();
            List<ComparativoProveedorInfo> q = compBL.getComparativoProveedorInfo(int.Parse(internalID.Value));
            
            

            proveedorGridView.DataSource = q.ToList();
            proveedorGridView.DataBind();
           // totalUpdatePanel.Update();
            //proveedorUpdatePanel.Update();


           
        }

        //protected void seleccProveedor_click(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        if (((Button)sender).Text == SeleccionProveedorButton.Text)
        //        {
        //            seleccionPopupExtender.Show();
        //        }
        //        //if (((Button)sender).Text == contratoDirectoAddButton.Text)
        //        //{
        //        //    using(dbGestionDataContext _db= new dbGestionDataContext(Parametros.strConnString))
        //        //    {

        //        //    ComparativoItem item = new ComparativoItem();
        //        //    List<view_comparativoItemAddProv> col = item.getListPendiente(_db, int.Parse(internalID.Value));
        //        //    Session[idtemAddProvList.Value] = col;
        //        //    }

        //        //    DataBindItemAddProv();
        //        //    seEstadisticaProvAdd();
        //        //    contratoDirectoModalpopupextender.Show();
        //        //}
        //        //if (((Button)sender).Text == eliminarContratoDirectoProvAddButton.Text)
        //        //{
        //        //    ComparativoBL bl = new ComparativoBL();
        //        //    bool res=bl.deleteContratoDirectoProveedor(int.Parse(internalID.Value));
        //        //    if (res)
        //        //    {
        //        //        string mensage = "se Elimino el Proveedor ";
        //        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //        //     "uniqueKey" + DateTime.Now, "alert('" + mensage.Replace("'", "") + "');", true);
        //        //    }
        //        //}

                

        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }
        //}

       

        protected void proveedorGridView_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if ((ComparativoProveedorInfo)e.Row.DataItem != null)
                {
                    if (((ComparativoProveedorInfo)e.Row.DataItem).idProveedor == 
                        int.Parse(idProveedorSelect.Value))
                    {
                        e.Row.BackColor = Color.FromName("#FFCCFF");

                    }
                  
                  
                }
            }
        }


        #endregion

        //protected void aceptarSelecProvButton_Click(object sender, EventArgs e)
        //{
        //    try
        //    {

          
        //    ComparativoBL cp = new ComparativoBL();

        //    cp.updateProveedorSeleccion(int.Parse(internalID.Value), int.Parse(ProveedorRadioButtonList.SelectedValue));
        //    seleccionPopupExtender.Hide();
        //    DataBindProveedor();
        //    DataBindComparativoItem();
        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }
        //  }

        //protected void cancelarSelecProvButton_Click(object sender, EventArgs e)
        //{
            

        //    seleccionPopupExtender.Hide();


        //}

        



        #region "Item Proveedor Add"
        //private void updatetipoCambioMoneda(int idmoneda, decimal tipoCambio)
        //{

        //    List<view_comparativoItemAddProv> ItemList =
        //                 (List<view_comparativoItemAddProv>)Session[idtemAddProvList.Value.ToString()];


        //    foreach (var i in ItemList)
        //    {
        //        i.tipoCambio = tipoCambio;
        //        i.precioBase=Math.Round(i.precioBase.Value*i.tipoCambio.Value,2);
        //        i.totalBase = i.cantidad * i.precioBase;
        //        i.precio = Math.Round(i.precio * i.tipoCambio.Value, 2);
        //        i.total = i.cantidad.Value * i.precio;
        //    }

        //    Session[idtemAddProvList.Value.ToString()] = ItemList;


        //}

        private void DataBindItemAddProv()
        {

            //List<view_comparativoItemAddProv> recursoList =
            //    (List<view_comparativoItemAddProv>)Session[idtemAddProvList.Value.ToString()];



            //ItemAddProvGridView.DataSource = recursoList;
            //ItemAddProvGridView.DataBind();

            //itemAddProvUpdatePanel.Update();

        }


        //private void seEstadisticaProvAdd()
        //{
        //    List<view_comparativoItemAddProv> ItemList =
        //     (List<view_comparativoItemAddProv>)Session[idtemAddProvList.Value.ToString()];


        //    decimal totalBase = ItemList.Sum(p => p.totalBase).Value;
        //    decimal totalProveedor = ItemList.Sum(p => p.total);

        //    totalProvAddBaseLabel.Text = idsimbolMoneda.Value + " " + totalBase.ToString();
        //    totalProvAddlabel.Text = idsimbolMoneda.Value + " " + totalProveedor.ToString();
        //    totalprovAddUpdatePanel.Update();

        //}


        protected void accionAgrupado_Click(object sender, EventArgs e)
        {
            try
            {
                if (((Button)sender).Text == "Guardar")
                {
                    //List<view_comparativoItemAddProv> ECItemList = (List<view_comparativoItemAddProv>)Session[idtemAddProvList.Value];
                    //BOL.ComparativoBL bol = new ComparativoBL();
                    //bool result=bol.addContratoDirectoProveedor(int.Parse(internalID.Value),
                    //    int.Parse(idproveedorEditTextBox.Text),
                    //    int.Parse(monedaDropDownList.SelectedValue),
                    //    int.Parse(formaPagoDropDownList.SelectedValue),
                    //    condicionTextBox.Text,
                    //    ECItemList);
                    //if (result)
                    //{
                    //    contratoDirectoModalpopupextender.Hide();
                    //}

                }
                if (((Button)sender).Text == "Finalizar")
                {
                    //AgrupadoTabContainer.ActiveTab.TabIndex = 1;
                    //Finaliza la transaccion
                }
                if (((Button)sender).Text == "Cancelar")
                {
                    //AddRecursoECItemPopup.Hide();
                }


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }


        //protected void UpdateItemProvAdd(object sender, GridViewUpdateEventArgs e)
        //{
        //    try
        //    {


        //        string totaltxt = ((TextBox)ItemAddProvGridView.Rows[e.RowIndex].FindControl("totalEditTextBox")).Text;
        //        string preciotxt = ((TextBox)ItemAddProvGridView.Rows[e.RowIndex].FindControl("precioEditTextBox")).Text;

        //        string idInternal = ((GridView)sender).DataKeys[e.RowIndex].Values[0].ToString();



        //        view_ComparativoItem comparativoItem = new view_ComparativoItem();

        //        List<view_comparativoItemAddProv> list = (List<view_comparativoItemAddProv>)Session[idtemAddProvList.Value.ToString()];


        //        view_comparativoItemAddProv a = list.Single(p => p.idInternal == int.Parse(idInternal));

        //        a.precio = decimal.Parse(preciotxt);
        //        a.total = decimal.Parse(totaltxt);

        //        a.precioMon = idsimbolMoneda.Value + " " + a.precio;
        //        a.totalMon = idsimbolMoneda.Value + " " + a.total;


        //        Session[idtemAddProvList.Value.ToString()] = list;

        //        ItemAddProvGridView.EditIndex = -1;


        //        DataBindItemAddProv();
        //        seEstadisticaProvAdd();

        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }

        //}


        //protected void EditItemProvAdd(object sender, GridViewEditEventArgs e)
        //{
        //    try
        //    {
        //        ItemAddProvGridView.EditIndex = e.NewEditIndex;

        //        int parent_index = e.NewEditIndex;



        //        DataBindItemAddProv();


        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }
        //}
        //protected void CancelitemProvAdd(object sender, GridViewCancelEditEventArgs e)
        //{
        //    ItemAddProvGridView.EditIndex = -1;
        //    DataBindItemAddProv();

        //}


        #endregion

        protected void ComparativoitemGridView_RowCreated(object sender, GridViewRowEventArgs e)
        {


            if (e.Row.RowType == DataControlRowType.DataRow)
            {


                




                if ((ComparativoItemInfo)e.Row.DataItem != null)
                {
                    var a = (ComparativoItemInfo)e.Row.DataItem;
                    //para ambos casos 
                    if (a.totalComparar > a.totalBase)
                    {
                        e.Row.Cells[7].ForeColor = Color.FromName("#CC0000");
                    }

                  
                        //caso de por dinero

                        //proveedor 1
                        if (a.precio1 <= a.precioBase)
                        {
                            //verde
                            e.Row.Cells[7].ForeColor = Color.FromName("#009900");
                            if (a.total1 > a.totalBase)
                            {
                                e.Row.Cells[7].ForeColor = Color.FromName("#CC0000");
                            }
                        }
                        if (a.precio1 > a.precioBase)
                        {

                            //depende si estoy comprando menos
                            if (a.totalBase >= a.total1)
                            {
                                //ambar  segun llegue al monto si  aun no pasa del total  disponible
                                e.Row.Cells[7].ForeColor = Color.FromName("#FF6600");

                            }
                            if (a.totalBase < a.total1)
                            {
                                //rojo segun llegue al monto
                                e.Row.Cells[7].ForeColor = Color.FromName("#CC0000");
                            }

                        }
                        //Proveedor 2
                        if (a.precio2 <= a.precioBase)
                        {
                            //verde
                            e.Row.Cells[8].ForeColor = Color.FromName("#009900");
                            if (a.total2 >= a.totalBase)
                            {
                                e.Row.Cells[8].ForeColor = Color.FromName("#CC0000");
                            }
                        }
                        if (a.precio2 > a.precioBase)
                        {

                            //depende si estoy comprando menos
                            if (a.totalBase >= a.total2)
                            {
                                //ambar  segun llegue al monto si  aun no pasa del total  disponible
                                e.Row.Cells[8].ForeColor = Color.FromName("#FF6600");

                            }
                            if (a.totalBase < a.total2)
                            {
                                //rojo segun llegue al monto
                                e.Row.Cells[8].ForeColor = Color.FromName("#CC0000");
                            }

                        }
                        //proveedor 3


                        //Proveedor 2
                        if (a.precio3 <= a.precioBase)
                        {
                            //verde
                            e.Row.Cells[9].ForeColor = Color.FromName("#009900");
                            if (a.total3 >= a.totalBase)
                            {
                                e.Row.Cells[9].ForeColor = Color.FromName("#CC0000");
                            }
                        }
                        if (a.precio3 > a.precioBase)
                        {

                            //depende si estoy comprando menos
                            if (a.totalBase >= a.total3)
                            {
                                //ambar  segun llegue al monto si  aun no pasa del total  disponible
                                e.Row.Cells[9].ForeColor = Color.FromName("#FF6600");

                            }
                            if (a.totalBase < a.total3)
                            {
                                //rojo segun llegue al monto
                                e.Row.Cells[9].ForeColor = Color.FromName("#CC0000");
                            }

                        }


                   
                }
            }
        }


        protected void ComparativoitemoGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.Header)
            {
                Label cab1 = (Label)e.Row.FindControl("headerProveedor1Label");
                Label cab2 = (Label)e.Row.FindControl("headerProveedor2Label");
                Label cab3 = (Label)e.Row.FindControl("headerProveedor3Label");

                var pq = from a in DbUtil.Db.ComparativoProveedors
                    where a.idComparativo==int.Parse(internalID.Value)
                    orderby a.item
                    select a;

                string proveedor1 = String.Empty;
                string proveedor2 = String.Empty;
                string proveedor3 = String.Empty;

                if (pq.Count() > 0)
                {
                    proveedor1 = pq.Single(p => p.item == 1).Proveedor.descripcion;
                    if (pq.Count() > 1)
                    {
                        proveedor2 = pq.Single(p => p.item == 2).Proveedor.descripcion;
                        if (pq.Count() > 2)
                        {
                            proveedor3 = pq.Single(p => p.item == 3).Proveedor.descripcion;
                        }

                    }
                }

                cab1.Text = proveedor1;
                cab2.Text = proveedor2;
                cab3.Text = proveedor3;
            }


            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                if (e.Row.RowState == System.Web.UI.WebControls.DataControlRowState.Normal | e.Row.RowState == System.Web.UI.WebControls.DataControlRowState.Alternate)
                {
                    //Label gv = (Label)e.Row.FindControl("ControlRowLabel");

                    //gv.Text = String.Empty;
                    //ComparativoItemInfo a = ((ComparativoItemInfo)(e.Row.DataItem));

                    //if (a.bitControlCant)
                    //{
                    //    gv.Text = "Por Unidades";
                    //}
                    //else
                    //{
                    //    gv.Text = "Por Dinero";
                    //}
                }
                else
                {
                    if (e.Row.RowState == (System.Web.UI.WebControls.DataControlRowState.Alternate | System.Web.UI.WebControls.DataControlRowState.Edit))
                    {

                        //RadioButtonList gv = (RadioButtonList)e.Row.FindControl("controlRadioButtonList");


                        //ComparativoItemInfo a = ((ComparativoItemInfo)(e.Row.DataItem));

                        //if (a.bitControlCant)
                        //{
                        //    gv.SelectedValue = "0";
                        //}
                        //else
                        //{
                        //    gv.SelectedValue = "1";
                        //}
                    }

                }




            }
        }
   
      


        protected void comparativoFinButton_Click(object sender, EventArgs e)
        {

            try 
	            {
                    finalizarDevolucionPopupExtender.Hide();
                    List<int> listaitem = ComparativoItemFinSeleccionPanel1.ItemLista;
                    ComparativoBL bo = new ComparativoBL();
                    bo.devolucion(int.Parse(internalID.Value),
                        ComparativoItemFinSeleccionPanel1.idMotivo, 
                        listaitem);
                    ComparativoDevListGrid1.DataBind();
                cabecerasPanel();
                    DataBindComparativoItem();
                    

                }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
           
        }

        

    }
}
